package single;

/**
 * @description:演示懒汉式单例模式
 * @Author yyp
 * @time
 */
public class SingleTome02 {
    public static void main(String[] args) {
        System.out.println(Cat.money);
        Cat cat1 = Cat.getInstance();
        System.out.println(cat1);
        Cat cat2 = Cat.getInstance();
        System.out.println(cat2);
        System.out.println(cat1 ==cat2);
    }
}
class Cat {
    private String name;
    private static Cat cat;
    public static int money = 999;
    //步骤
    //1.仍然构造器私有化
    //2.定义一个static静态属性对象
    //3.提供一个public的static方法，可以返回一个Cat对象
    //4.只有当用户使用getInstance方法是，才返回cat对象，后面再次调用时，会返回上次创建的cat对象
    //  从而保证单例
    private Cat(String name) {
        System.out.println("构造器调用");
        this.name = name;
    }
    public static Cat getInstance(){
        if(cat == null){
            cat = new Cat("呜喵");
        }
        return cat;
    }
}


